package com.koron.plan.web.patrolplan.bean.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.koron.plan.web.common.DeleteFlag;
import com.koron.plan.web.common.UpdateParameter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

@Data
@ApiModel("巡视计划")
public class PatrolPlanBean implements Serializable, UpdateParameter, DeleteFlag {

    private static final long serialVersionUID = -39743301929705746L;

    @ApiModelProperty("32位随机数，主键")
    private String id;

    @ApiModelProperty("编码,{标识码}{单位缩写}{YYYYMMDD}{流水号}，eg:XSTY20210923001")
    private String code;

    @ApiModelProperty("计划名称")
    private String name;

    @ApiModelProperty("巡视类别：厂站、线路、分水点")
    private String patrolCategory;

    @ApiModelProperty("计划所属部门，默认跟创建单位相同")
    private String planDeptId;

    @ApiModelProperty("计划所属部门名称")
    private String planDeptName;

    @ApiModelProperty("巡视单位")
    private String patrolDeptId;

    @ApiModelProperty("巡视单位名称")
    private String patrolDeptName;

    /**
     * EAM 值班长+值班员monitor_officer、值班员attendant、值守unattended、指定appoint
     * AMD 根据排班表baseonjob、指定appoint
     */
    @ApiModelProperty("人员安排方式：值班长+值班员、值班员、值守、指定、baseonjob")
    private String staffingWay;

    /**
     * EAN中作为值班地点
     * AMD中作为岗位
     */
    @ApiModelProperty("值班地点, AMD中作为岗位id")
    private String locationId;

    @ApiModelProperty("签到方式：NFC、GPS、RFID")
    private String arriveWay;

    @ApiModelProperty("完成时必须签名 是：1 否：0")
    private Integer mustSign;

    @ApiModelProperty("准备工作")
    private String readyWork;

    @ApiModelProperty("定时下达 是：1 否：0")
    private Integer isTimer;

    @ApiModelProperty("提前下达 单位：小时")
    private Double advanceHours;

    @ApiModelProperty("巡视时长 单位：小时")
    private Double patrolDuration;

    @ApiModelProperty("备注")
    private String remark;

    @ApiModelProperty("计划状态")
    private Integer state;

    @ApiModelProperty("创建人,账号")
    private String createBy;

    @ApiModelProperty("创建人名称")
    private String createByName;

    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty("修改人,账号")
    private String updateBy;

    @ApiModelProperty("修改人名字")
    private String updateByName;

    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @ApiModelProperty("主表需要部门字段，用于数据权限")
    private String deptId;

    @ApiModelProperty("创建单位名称")
    private String deptName;

    @JsonIgnore
    @ApiModelProperty("删除标志 0：未删除 1：已删除")
    private Boolean deleteFlag;
}
